import 'package:shared_preferences/shared_preferences.dart';

class TokenManager {
  String? _token; // token值
  final String _Key = 'enjoy_plus_hm_token'; // 键

  static TokenManager? _instance;
  TokenManager._internal(); // 私有构造函数 防止外部通过new创建实例
  // 工厂构造函数 创建单例
  factory TokenManager() {
    _instance ??= TokenManager._internal();
    return _instance!;
  }

  // 异步 获取token 负责从存储中加载token并更新内存中的状态
  Future<void> init() async {
    final prefs = await SharedPreferences.getInstance();
    _token = prefs.getString(_Key) ?? '';
  }

  // 存储token
  Future<void> setToken(String token) async {
    final prefs = await SharedPreferences.getInstance();
    await prefs.setString(_Key, token);
    _token = token;
  }

  // 同步 获取token 负责提供当前内存中的token值
  String? getToken() {
    return _token;
  }

  // 删除token
  Future<void> removeToken() async {
    final prefs = await SharedPreferences.getInstance();
    await prefs.remove(_Key);
    _token = null;
  }
}
